package com.ddm.utils;
import lombok.extern.slf4j.Slf4j;

/**
 * 用户名脱敏工具类
 */
@Slf4j
public class UserNameMaskUtil {
    
    /**
     * 获取部分脱敏的用户名
     * 保留首尾字符，中间用*替换
     * 
     * @param userName 原始用户名
     * @return 脱敏后的用户名
     */
    public static String getPartialMaskedUserName(String userName) {
        if (userName == null || userName.length() <= 2) {
            return userName;
        }
        
        if (userName.length() == 3) {
            return userName.charAt(0) + "*" + userName.charAt(2);
        }
        
        // 长度大于3的情况，保留首尾字符
        return userName.charAt(0) + "*".repeat(userName.length() - 2) + userName.charAt(userName.length() - 1);
    }
    
    /**
     * 获取完全脱敏的用户名
     * 全部用*替换
     * 
     * @param userName 原始用户名
     * @return 脱敏后的用户名
     */
    public static String getFullMaskedUserName(String userName) {
        if (userName == null) {
            return null;
        }
        return "*".repeat(userName.length());
    }
    
    /**
     * 获取手机号脱敏
     * 保留前3位和后4位
     * 
     * @param phone 手机号
     * @return 脱敏后的手机号
     */
    public static String getMaskedPhone(String phone) {
        if (phone == null || phone.length() < 7) {
            return phone;
        }
        return phone.substring(0, 3) + "****" + phone.substring(phone.length() - 4);
    }
    
    /**
     * 获取邮箱脱敏
     * 保留@前的前2位和后2位
     * 
     * @param email 邮箱
     * @return 脱敏后的邮箱
     */
    public static String getMaskedEmail(String email) {
        if (email == null || !email.contains("@")) {
            return email;
        }
        
        String[] parts = email.split("@");
        String localPart = parts[0];
        String domain = parts[1];
        
        if (localPart.length() <= 4) {
            return email;
        }
        
        String maskedLocal = localPart.substring(0, 2) + "***" + localPart.substring(localPart.length() - 2);
        return maskedLocal + "@" + domain;
    }
} 